1. Field of the Invention
This disclosure is generally related to static memory, and more particularly to storing large amounts of information such as diagnostic freeze frames to save information such as parameters useful in diagnostic analysis of fault conditions.
2. Description of the Related Art
Current automotive embedded controller designs contain both a flash memory part for code and small amounts of EEPROM for calibrations and diagnostic information. Recent applications require storing large amounts of diagnostic freeze frames to save variables corresponding to system operating parameters, for example, in order to help in service diagnostic analysis on detection of a fault. Saving large amounts of data in EEPROM would require accepting the higher cost of larger and expensive chips, using more expensive flash devices that contain both flash and EEPROM cells, or using software emulation. The use of flash devices as replacement for EEPROMS are generally discussed in “EEPROM Replacement with Flash Memory”, INTEL Application Note AP-685; “Using INTEL's Boot Block Flash Memory Parameter Blocks To Replace EEPROM”, INTEL Application Note AP-604; and AM29F200B Data Sheet from AMD.
Software emulation poses a variety of challenges. To overcome the limitations that a flash memory cell must be erased prior to being reprogrammed, if the application stores the freeze frames at fixed locations, the entire block/sector of the flash memory must be erased every time. An alternative would be to write each new frame to a different fresh location and maintain a string of linked address pointers to locate the latest frame. When the entire sector is filled up, the sector will have to be erased and the process starts over. In order to retrieve the location of the last updated frame, the software must start at the initial location and follow the chain of pointers to locate the most recent update. This can take a significant amount of time.